package com.bbva.kyfb.kyfbdaofo.implement;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Repository;

import com.bbva.jee.arq.spring.core.contexto.ArqSpringContext;
import com.bbva.jee.arq.spring.core.gce.ExcepcionEjecucionAplicacion;
import com.bbva.jee.arq.spring.core.util.excepciones.PropiedadNoEncontradaExcepcion;
import com.bbva.kyfb.kyfbdto.abstracts.OolDaoAbstract;
import com.bbva.kyfb.kyfbdtofo.entitys.OolDTO;
import com.bbva.kyfb.kyfbdtofo.firmas.errores.Errores_kyfbfo_servicios;

@Repository
@SuppressWarnings("unchecked")
public class OolDaoH2 extends OolDaoAbstract {

	@Override
	@PersistenceContext(unitName = "persistenceUnitTLSB")
	protected void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}

	@Override
	public List<OolDTO> selectOODFromOOLByQnuNumitemAndTimOrden(
			String qnuNumitem, Date timOrden) {
		try {
			String qlString = ArqSpringContext
					.getPropiedad("TLSB.TTLSBOOL.SELECT_OOL_FROM_OOL_BY_QNU_NUMITEM_AND_TIM_ORDEN");

			Query query = entityManager.createQuery(qlString);
			query.setParameter("QNU_NUMITEM", new BigDecimal(qnuNumitem));
			query.setParameter("TIM_ORDEN", timOrden);

			return query.getResultList();

		} catch (PropiedadNoEncontradaExcepcion e) {
			throw new ExcepcionEjecucionAplicacion(
					Errores_kyfbfo_servicios.ERROR_EN_SQL);
		}
		catch(JpaSystemException a){
			throw new ExcepcionEjecucionAplicacion(
					Errores_kyfbfo_servicios.ERROR_EN_SQL);
		}
	}
}